<?php
include '../mod.php'; //引入程序入口文件

/** 更新链接 */
$VERSION_URLS = array(
	'modcms' => 'http://modphp.hyurl.com/modcms/version',
	'modphp' => 'http://modphp.hyurl.com/version'
	);

/** 定义常量 */
define('DISPLAY_FILENAME', get_template_file(url(), 'template/', current_dir_url())); //模板文件名

/** 检查是否登录 */
if(config('mod.installed')){
	if(!is_logined() && DISPLAY_FILENAME != 'template/login.html'){
		redirect(ADMIN_URL.'login.html');
	}elseif(is_logined() && DISPLAY_FILENAME == 'template/login.html'){
		redirect(ADMIN_URL);
	}
}

/** 设置访问权限 */
$privileges = include('config/privileges.php');
if(file_exists($file = __ROOT__.'user/config/privileges.php')){
	$_privileges = include($file);
	$privileges = array_xmerge($privileges, $_privileges);
}
$ADMIN_FILES = array_map(function($v){
	return 'template/'.$v;
}, $privileges['admin']);
$EDITOR_FILES = array_map(function($v){
	return 'template/'.$v;
}, $privileges['editor']);
foreach($ADMIN_FILES as $file){
	if(($file == DISPLAY_FILENAME || ($file[strlen($file)-1] == '/' && stripos(DISPLAY_FILENAME, $file) === 0)) && !IS_ADMIN){
		report_403();
	}
}
foreach($EDITOR_FILES as $file){
	if(($file == DISPLAY_FILENAME || ($file[strlen($file)-1] == '/' && stripos(DISPLAY_FILENAME, $file) === 0)) && !IS_AUTH){
		report_403();
	}
}

/** 预备显示模板 */
$baseName = substr(DISPLAY_FILENAME, strlen('template/'));
define('DISPLAY_BASENAME', substr($baseName, 0, strrpos($baseName, '.'))); //模板文件名（不含后缀）

unset($ADMIN_FILES, $EDITOR_FILES, $baseName, $_privileges, $file); //释放变量

if(!file_exists(DISPLAY_FILENAME)){
	if(in_array(DISPLAY_FILENAME, array('index.php', 'index.html', 'index.htm'))){
		report_403();
	}else{
		report_404();
	}
}

/** 自动载入可能模板环境文件 */
include 'template/php/common.php';
@include 'template/php/'.DISPLAY_BASENAME.'.php';

/** 配置编译器 */
template::$rootDir = current_dir();
template::$rootDirURL = current_dir_url();
template::$saveDir = __ROOT__.config('mod.template.compiler.savePath').'admin/';

/** 编译并/或载入模板文件 */
if(CMS_COMPILER == 2 && file_exists(template::$saveDir.'template/'.DISPLAY_BASENAME.'.php')){
	include_once template::$saveDir.'template/'.DISPLAY_BASENAME.'.php';
}else{
	include_once template::compile(DISPLAY_FILENAME) ?: DISPLAY_FILENAME;
}